using System;

namespace lab04
{
    /*
    internal class HideMatrixDecorator : DrawableMatrix
    {
        private readonly DrawableMatrix _com;
        private int _hideColumn;
        private int _hideRow;
        private bool _isHide;

        public HideMatrixDecorator(DrawableMatrix com)
        {
            _com = com;
            _isHide = false;
        }

        public void HideOn()
        {
            _isHide = true;
            Random r = new Random();
            _hideColumn = r.Next(_com.GetNumColumns());
            _hideRow = r.Next(_com.GetNumRows());
        }

        public void HideOff()
        {
            _isHide = false;
        }


        public override void SetValue(int i, int j, int value)
        {
            _com.SetValue(i, j, value);
        }

        public override int GetValue(int i, int j)
        {
            return _com.GetValue(i, j);
        }

        public override int GetNumRows()
        {
            return _com.GetNumRows();
        }

        public override int GetNumColumns()
        {
            return _com.GetNumColumns();
        }

        public override void InternalDrawer(IMatrixDrawer drawer, DrawableMatrix matrix)
        {
            _com.InternalDrawer(drawer, matrix);
        }

        public override void DrawBorder(IMatrixDrawer drawer, int n, int m)
        {
            _com.DrawBorder(drawer, n, m);
        }

        public override void DrawCell(IMatrixDrawer drawer, int i, int j)
        {
            _com.DrawCell(drawer, i, j);
        }

        public override void DrawValue(IMatrixDrawer drawer, int i, int j, int value)
        {
            if (_isHide && (i == _hideColumn || j == _hideRow)) return;
            _com.DrawValue(drawer, i, j, value);
        }
    }
    */


    /*
    class UpperMatrixVisualizator : MatrixVisualizator
    {
        private readonly MatrixVisualizator _com;

        public UpperMatrixVisualizator(MatrixVisualizator com) : base(com.Matrix, com.Drawer)
        {
            _com = com;
        }

        public override void Visualize()
        {
            _com.Visualize();
        }

        public override void DrawBorder(int M, int N)
        {
            _com.DrawBorder(M, N);
        }

        public override void DrawCell(int i, int j)
        {
            if (i > j) return;
            _com.DrawCell(i, j);
        }

        public override void DrawValue(int i, int j, int value)
        {
            if (i > j) return;
            _com.DrawValue(i, j, value);
        }

        public override IMatrixDrawer Drawer { get { return _com.Drawer; } set { _com.Drawer = value; } }
        public override IMatrix Matrix { get { return _com.Matrix; } set { _com.Matrix = value; } }
    }
    */
}